; Dit programma laat de 8 leds van poort D afwisselend branden. Eerst worden de 8 pinnen, 
; waaraan de leds gekoppeld zijn, als uitgang geschakeld. Dan zetten we de eerste Led aan en 
; wachten, dit gebeurd door het aanroepen van de routine delay. De delay routine bestaan uit 
; 2 genestelde lussen die elk 255 keer worden uitgevoerd, waardoor een delay van ongeveer 
; 0.5 sec wordt bekomen. Daarna wordt de waarde van Poort D naar links geroteerd. Doordat de 
; carry bit in het status register op nul gezet is, wordt rechts een nul bijgevoegd. Als 
; gedecteerd wordt dat de 8ste led brand wordt naar loop2 overgegaan waar de rotatie in de 
; andere richting gebeurd. 


	LIST   P=PIC16F877A
	#INCLUDE P16F877A.INC

	__CONFIG        _CP_OFF & _DEBUG_OFF & _LVP_OFF & _PWRTE_ON & _WDT_OFF & _BODEN_OFF & _HS_OSC


TIMER1          EQU     H'20'   	
TIMER2          EQU     H'21'   

		ORG	0
		GOTO	RESET
		ORG	4
		NOP
		
;		**************************
;               *     main routine:      *
;               **************************
RESET

	BSF	STATUS,RP0
	MOVLW	B'00000000'
	MOVWF	TRISD		; Maak alle pinnen van port D uitgang
	BCF	STATUS,RP0

	MOVLW	B'00000001' 	; Zet 1ste Led aan
	MOVWF	PORTD
LOOP1	
	CALL	DELAY		; Wacht
	BCF	STATUS,C	; Wis de Carry bit
	RLF	PORTD,F		; Rotate LEft (met Carry bit = 0)
	BTFSS	PORTD,7		; Test of 8ste led brand
	GOTO	LOOP1		; Indien niet spring naar LOOP1

LOOP2	
	CALL	DELAY		; Wacht
	BCF	STATUS,C	; Wis de Carry bit
	RRF	PORTD,F		; Rotate LEft (met Carry bit = 0)
	BTFSS	PORTD,0		; Test of 8ste led brand
	GOTO	LOOP2		; Indien niet spring naar LOOP2
	
	GOTO	LOOP1



;		**************************
;               *        delay  routine: *
;               **************************
DELAY		CLRWDT
		MOVLW   D'255'          ;*
                MOVWF   TIMER1          ;*
                ;
DELAY2		MOVLW	D'255'
		MOVWF	TIMER2
		DECFSZ  TIMER2,F        ;*
                GOTO    $-1             ;*
                
		DECFSZ	TIMER1,F
		GOTO	DELAY2	
		RETLW   0

	        END                     ; End of source code.
					; Ronald Van Ham


 
